/*
  1 页面被打开的时候 onShow
    0 onShow 不同于onLoad 无法在形参上接收 options参数
    0.5 判断缓存中有没有token
     1 没有 直接跳转到授权页面
     2 有直接往下进行
    1 获取url上的参数type
    2 根据type 去发送请求获取订单数据
    3 渲染页面
  2 点击不同的标题 重新发送请求来获取和渲染数据

*/
import { request } from "../../request/index.js"
//这里使用ES7 的async await 需要这个,不能app.js全局使用,必须单独使用
//https://github.com/yangsuai/regeneratorRuntime
import regeneratorRuntime from '../../lib/runtime/runtime.js';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    orders:[],
    tabs: [
      {
        id: 0,
        value: '全部',
        isActive: true
      },
      {
        id: 1,
        value: '待付款',
        isActive: false
      },
      {
        id: 2,
        value: '待发货',
        isActive: false
      }, {
        id: 3,
        value: '退款/退货',
        isActive: false
      }
      ]
  },

  //onShow是接收不到启动参数的
  onShow: function (options) {
    const token = wx.getStorageSync("token");
    if(!token){
      // wx.navigateTo({
      //   url: '/pages/auth/index',
      // });
      wx.showToast({
        title: '由于不是企业微信,授权失败返回上一页',
        icon: 'none',
        duration: 2000,
        mask: true
      })
      let i = setTimeout({

      },2000)
      
      clearTimeout(i);

      wx.switchTab({
        url: '/pages/user/index'
      })
      return;
    }
    // 获取当前的小程序的页面栈-数组 长度最大是10页面
    let pages = getCurrentPages();
    //数组中 索引最大的页面就是当前页面
    let currentPage = pages[pages.length - 1];
    //获取URL上的type参数
    const {type} = currentPage.options;
    // 激活选中页面标题 当 type=1 index=0
    this.changeTitleByIndex(type-1);
    this.getOrders(type);
  },

  //获取订单的列表方法
  async getOrders(type){
    const res = await request({ url:'/my/orders/all',data:{type}})
    this.setData({ orders: res.orders.map(v=>({...v,create_time_cn:(new Date(v.create_time*1000).toLocaleString())}))});
  },

  //根据标题索引来激活选中 标题数组
  changeTitleByIndex(index){
    //2 修改原数组
    let { tabs } = this.data;
    tabs.forEach((v, i) => i === index ? v.isActive = true : v.isActive = false);
    this.setData({ tabs: tabs })
  },

  handletabsItemChange(e) {
    //接受又子组件传递过来的数据 e.detail
    const { index } = e.detail;
    this.changeTitleByIndex(index);
    // 重新发送请求 type=1 index=0
    this.getOrders(index+1);
  },
  
  //只有onLoad才能接收启动参数
  // onLoad: function (options) {
  //   // console.log(options)
  // },

})